﻿using ConfExpert.Forms.Base;
using DevExpress.Utils;
using DevExpress.XtraEditors.Repository;
using DevTeam;

using System;
using System.Drawing;

namespace ConfExpert.Forms.Aksesuar
{
    public partial class OrtakAksesuarOzet : XForm
    {
        public OrtakAksesuarOzet()
        {
            InitializeComponent();
        }

        private void OrtakAksesuarOzet_Load(object sender, EventArgs e)
        {
            gvAksesuar.Init("GetOrtakAksesuarDurumu", WhoAmI);

            gvAksesuar.Columns["AksesuarId"].ColumnEdit = new RepositoryItemTextEdit();
            gvAksesuar.Columns["AksesuarId"].OptionsColumn.AllowEdit = false;
            gvAksesuar.Columns["AksesuarId"].AppearanceCell.BackColor = System.Drawing.Color.LightYellow;

            gvAksesuar.MakeColumnInvisible("KritikLimit", "UyariLimiti");
            gvAksesuar.FormatAsNumber(0, "RaftakiMiktar", "CikilacakMiktar", "YoldakiMiktar", "ToplamTalep", "KullanilabilirMiktar");

            gvAksesuar.AddSummary("RaftakiMiktar", "CikilacakMiktar", "YoldakiMiktar", "ToplamTalep", "KullanilabilirMiktar");

            gvAksesuar.Columns["RaftakiMiktar"].ToolTip = "Depodaki fiili stoğu gösterir.";
            gvAksesuar.Columns["CikilacakMiktar"].ToolTip = "Çıkış emri ile çıkılmayı bekleyen toplam adeti gösterir.";
            gvAksesuar.Columns["YoldakiMiktar"].ToolTip = "Üreticiye siparişi geçilmiş ve henüz stoğa girişi yapılmamış toplam adeti gösterir.";
            gvAksesuar.Columns["ToplamTalep"].ToolTip = "Henüz üreticiye siparişi geçilmemiş olan satınalma taleplerinin toplam adetini gösterir.";
            gvAksesuar.Columns["KullanilabilirMiktar"].ToolTip = "Toplam fiili stok adetinden toplam çıkılacak adetin düşülmesi ile elde edilen sayıdır.";
            
            gvAksesuar.RowCellStyle += gvAksesuar_RowCellStyle;
            bbiGuncelle.ItemClick += bbiGuncelle_ItemClick;

            gvAksesuar.BestFitColumns();
        }

        void bbiGuncelle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvAksesuar.RefreshDataSource("GetOrtakAksesuarDurumu", WhoAmI);
        }

        void gvAksesuar_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                int UyariLimiti = gvAksesuar.GetRowCellValue(e.RowHandle, "UyariLimiti").ToInt();
                int KritikLimit = gvAksesuar.GetRowCellValue(e.RowHandle, "KritikLimit").ToInt();
                int KullanilabilirMiktar = gvAksesuar.GetRowCellValue(e.RowHandle, "KullanilabilirMiktar").ToInt();
                int YoldakiMiktar = gvAksesuar.GetRowCellValue(e.RowHandle, "YoldakiMiktar").ToInt();
                switch (e.Column.FieldName)
                {
                    case "KullanilabilirMiktar":
                        e.Appearance.Font = new Font(AppearanceObject.DefaultFont, FontStyle.Bold);
                        if (KullanilabilirMiktar + YoldakiMiktar < KritikLimit)
                            e.Appearance.ForeColor = Color.Red;
                        else if (KullanilabilirMiktar + YoldakiMiktar < UyariLimiti && KullanilabilirMiktar + YoldakiMiktar > KritikLimit)
                            e.Appearance.ForeColor = Color.Orange;
                        else
                            e.Appearance.ForeColor = Color.Green;
                        return;
                }
            }
        }
    }
}
